//认识文件,file类的常见属性1
//在Java中,一般谈到文件,都是指存储在磁盘上的文件(狭义上)
//如果抛开Java,站在系统得到角度上来看,操作系统在管理很多软件资源和硬件设备的时候,
// 都是把这些东西抽象成一个一个的文件("一切皆文件"的思想,例如显示器,键盘,打印机,网卡..被抽象成了文件)

import java.io.File;
import java.io.IOException;

/**
 * 狭义的文件,可以分为两个大类:
 * 1.普通文件.
 * 2.目录文件(文件夹)
 */
//操作文件,file类
public class fileDemo1 {
    /**
     * pathname -> 系统中用来描述文件位置的一种方式
     *  D:\java上课笔记\JavaWeb\文件操作和IO\src\fileDemo1.java
     *  在一台主机上,一个文件对应这一唯一的路径,通过这个路径就可以确定这个文件
     *  此处的\(pathSeparator)就是在分割不同层级的目录
     *  在windows上既可以使用\作为目录的分割符,也可以使用/来分割
     *  在Linux,Mac上使用/来作为路径之间的分割符
     *  (读法:/ 反斜杆,\ 斜杆)
     *  在实际开发中,表示一个路径,通常有两种方式:
     *  1.绝对路径  D:\java上课笔记\JavaWeb\文件操作和IO\src\fileDemo1.java
     *              以一个盘符开头的路径,这种就是绝对路径
     *  2.相对路径    一般是以.或者..开头.
     *              有一个基准目录(工作目录),以工作目录为基准,去找到对应的路径
     *
     *  在idea上 ,直接运行一个程序,此时的工作目录,就是当前项目所在的目录(文件操作和IO)
     *  这里是以D:\java上课笔记\JavaWeb\文件操作和IO为基准目录
     *  在代码中涉及到的相对路径,其实也就是以这个当前项目所在的目录作为基准
     *
     *  如果基准目录是 D:\java上课笔记\JavaWeb\文件操作和IO\src
     *  此时要表示fileDemo1.java这个文件(是src所在目录下的文件)
     *  那么相对路径就可以写作.\fileDemo1.java
     *
     *  如果基准的目录不一样,相对路径的写法也会不一样
     *
     *  如果是以D:\java上课笔记\JavaWeb\文件操作和IO 作为基准目录
     *  此时要表示fileDemo1.java
     *  .\src\fileDemo1.java
     *
     *  如果是以D:\java上课笔记\JavaWeb\文件操作和IO\src\fileDemo2 作为基准目录
     *  (fileDemo2.java也是src所在的目录),此时要表示处于同一目录下的文件 fileDemo1.java
     *  ..\fileDemo1.java
     *  ..表示当前目录的上级目录
     *
     */
    //    File(String pathname) 根据文件路径创建一个新的 File 实例，路径可以是绝对路径或者 相对路径
    //这里就需要给file传递一个具体的路径,通过这个路径来指定唯一的一个文件(可能是一个普通文件,也可能是一个目录文件)
//    File(File parent, String child) 根据父目录 + 孩子文件路径，创建一个新的 File 实例
//    File(String parent, String child)根据父目录 + 孩子文件路径，创建一个新的 File 实例，父目录用路径表示
    public static void main1(String[] args) throws IOException {
        //在执行路径的时候,虽然系统支持\的写法,但是由于在Java中,\+其它字符 相当于转译字符
        //因此需要对\进行转译
        File file = new File("d:/test.txt");// 并不要求该文件真实存在
        //返回File对象的父目录文件路径
        System.out.println(file.getParent());
        //返回File对象的纯文件名称
        System.out.println(file.getName());
        //返回File对象的文件路径
        System.out.println(file.getPath());
        //返回File对象的绝对路径
        System.out.println(file.getAbsolutePath());
        //返回File对象修饰过的绝对路径
        System.out.println(file.getCanonicalPath());
        //判断File对象描述的文件是否真实存在
        System.out.println(file.exists());

    }
// windows上默认使用\作为目录之间的分割符的.虽然windows也支持/,但是在代码内部一般是使用\来表示
    public static void main(String[] args) throws IOException {
        File file = new File("././././test.txt");// "./test.text"
        //返回File对象的父目录文件路劲
        System.out.println(file.getParent());
        //返回File对象的纯文件名称
        System.out.println(file.getName());
        //返回File对象的文件路径
        System.out.println(file.getPath());
        //返回File对象的绝对路径
        System.out.println(file.getAbsolutePath());
        //返回File对象修饰过的绝对路径(简化过)
        System.out.println(file.getCanonicalPath());
        //判断File对象描述的文件是否真实存在
        System.out.println(file.exists());

    }

}
